#ifndef TELCO_H_INCLUDED
#define TELCO_H_INCLUDED

#include "lista.h"
#include "tipos.h"
#include "gateway.h"

class TelCO {
	public:
        TelCO();
		TelCO(Lista<Usuario>& u, Lista<Gateway>& g);
		bool operator==(const TelCO& t) const;

        Lista<Usuario> usuarios() const;
        Lista<pair<SMS,SMS> > mensajes() const;
        Lista<Gateway> gateways() const;
        void procesarMensaje(const Usuario u, const SMS& s);
        Lista< pair<Gateway, pair< int,int > > > infoGateways() const;

        void mostrar(std::ostream& os) const;
		void guardar(std::ostream& os) const;
		void cargar (std::istream& is);

	private:
        //Atributos
		Lista<pair<SMS,SMS> > _mensajes;
		Lista<Usuario> _usuarios;
		Lista<Gateway> _gateways;

		void init (Lista<Usuario>& u, Lista<Gateway>& g);

		//procesarMensaje
		Gateway dameGateway(Numero n) const;

		//infoGateways
		int usuariosDeLasTrivias(const Gateway& g) const;
        bool estaEnAlgunaTrivia(const Usuario, const Lista<Trivia>& trivias) const;

		enum {ENCABEZADO_ARCHIVO = 'T'};
};

#endif
